﻿' ******************************************************************************
' ** 
' **  Yahoo! Managed
' **  Written by Marius Häusler 2011
' **  It would be pleasant, if you contact me when you are using this code.
' **  Contact: YahooFinanceManaged@gmail.com
' **  Project Home: http://code.google.com/p/yahoo-finance-managed/
' **  
' ******************************************************************************
' **  
' **  Copyright 2011 Marius Häusler
' **  
' **  Licensed under the Apache License, Version 2.0 (the "License");
' **  you may not use this file except in compliance with the License.
' **  You may obtain a copy of the License at
' **  
' **    http://www.apache.org/licenses/LICENSE-2.0
' **  
' **  Unless required by applicable law or agreed to in writing, software
' **  distributed under the License is distributed on an "AS IS" BASIS,
' **  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' **  See the License for the specific language governing permissions and
' **  limitations under the License.
' ** 
' ******************************************************************************



Namespace YahooManaged.Geo


    Public Structure CoordinatesRectangle
        Private mSouthWest As Coordinates
        Private mNorthEast As Coordinates
        Public Property SouthWest() As Coordinates
            Get
                Return mSouthWest
            End Get
            Set(ByVal value As Coordinates)
                mSouthWest = value
            End Set
        End Property
        Public ReadOnly Property SouthEast() As Coordinates
            Get
                If (mSouthWest.Longitude < mNorthEast.Longitude And mNorthEast.Latitude > mSouthWest.Latitude) Then
                    Return New Coordinates(mNorthEast.Longitude, mSouthWest.Latitude)
                Else
                    Return New Coordinates
                End If
            End Get
        End Property
        Public Property NorthEast() As Coordinates
            Get
                Return mNorthEast
            End Get
            Set(ByVal value As Coordinates)
                mNorthEast = value
            End Set
        End Property
        Public ReadOnly Property NorthWest() As Coordinates
            Get
                If (mSouthWest.Longitude < mNorthEast.Longitude And mNorthEast.Latitude > mSouthWest.Latitude) Then
                    Return New Coordinates(mSouthWest.Longitude, mNorthEast.Latitude)
                Else
                    Return New Coordinates
                End If
            End Get
        End Property
        Public Sub New(ByVal sw As Coordinates, ByVal ne As Coordinates)
            mSouthWest = sw
            mNorthEast = ne
        End Sub
        Public Shared Operator =(ByVal obj1 As CoordinatesRectangle, ByVal obj2 As CoordinatesRectangle) As Boolean
            Return obj1.NorthEast = obj2.NorthEast And obj1.SouthWest = obj2.SouthWest
        End Operator
        Public Shared Operator <>(ByVal obj1 As CoordinatesRectangle, ByVal obj2 As CoordinatesRectangle) As Boolean
            Return obj1.NorthEast <> obj2.NorthEast Or obj1.SouthWest <> obj2.SouthWest
        End Operator
    End Structure


End Namespace